﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BLL
{
    public interface IProcessData
    {
        /// <summary>
        /// Phương thức getAllData dùng để lấy tất cả dữ liệu của một bảng
        /// Phương thức trả về là kiểu dữ liệu List<Object>.
        /// Chú ý khi setDataSource phải ép kiểu về đúng dạng đối tượng. Ví dụ: GridNhanVien.DataSource = (List<NhanVien>)ObjectBLL.gelAllData();
        /// </summary>
        /// <returns>List<Object></returns>
        Object getAllData();

        /// <summary>
        /// Phương thức findObjectById dùng để tìm kiếm đối tượng theo id của đối tượng
        /// Phương thức trả về là kiểu dữ liệu List<Object>.
        /// Chú ý khi setDataSource phải ép kiểu về đúng dạng đối tượng. Ví dụ: GridNhanVien.DataSource = (List<NhanVien>)ObjectBLL.findObjectById(id);
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>


        /// <summary>
        /// Phương thức findObject dùng để tìm kiếm đối tượng theo nội dung nguoi dung nhập và tìm kiếm theo từ khóa
        /// Phương thức trả về là kiểu dữ liệu List<Object>.
        /// Chú ý khi setDataSource phải ép kiểu về đúng dạng đối tượng. Ví dụ: GridNhanVien.DataSource = (List<NhanVien>)ObjectBLL.findObjects(name,MaLoai);
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Object findObjects(String find_content);


        /// <summary>
        /// Phương thức findObject dùng để tìm kiếm đối tượng theo nội dung nguoi dung nhập và tìm kiếm theo từ khóa
        /// Phương thức trả về là kiểu dữ liệu List<Object>.
        /// Chú ý khi setDataSource phải ép kiểu về đúng dạng đối tượng. Ví dụ: GridNhanVien.DataSource = (List<NhanVien>)ObjectBLL.findObjects(name,MaLoai);
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Object findObjects(int find_content);

        /// <summary>
        /// Phương thức dùng để sắp xếp lại các dòng dữ liệu dựa theo từng cột.
        /// </summary>
        /// <param name="Col_Name">Tên cột cần dựa vào để sắp xếp</param>
        /// <param name="state">tình trạng sắp xếp của cột</param>
        /// <returns></returns>
        Object sort(String Col_Name, bool state);


        /// <summary>
        /// Phương thức addObject dùng để thêm một đối tượng
        /// Tham số ở đây là một Object. Đối tượng cao nhất. Vì thế khi truyền tham số  vào cần phải chú ý ép kiểu về đối tượng cần xử lý.
        /// Ví dụ:
        /// public bool addObject(Object addObj){
        ///     NhanVien nv=(NhanVien)addObj; //nhớ ép kiểu về đối tượng cần xử lý.
        /// }
        /// Phương thức trả về kiểu dữ liệu là bool.
        /// Kiểm tra nếu đúng thì trả về true, ngược lại false.
        /// </summary>
        /// <param name="addObj"></param>
        /// <returns></returns>
        bool addObject(Object addObj);

        /// <summary>
        /// Phương thức deleteObject dùng để xóa một đối tượng cụ thể dựa theo id của đối tượng.
        /// Kiểu dữ liệu trả về là true nếu xóa thành công và ngược lại.
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        bool deleteObject(int id);

        /// <summary>
        /// Phương thức updateObject dùng để cập nhật dữ liệu cho một đối tượng dựa vào id cung cấp. 
        /// Chú ý ép kiểu như các phương thức trên.
        /// Kiểu dữ liệu trả về true nếu cập nhật thành công và ngược lại.
        /// </summary>
        /// <param name="updateObj"></param>
        /// <returns></returns>
        bool updateObject(Object updateObj);


    }
}
